#include <cstdlib>
#include <iostream>
#include <string>

#include "udp_server.h"

constexpr char SERVER_FILE_PATH[] = "./files/server_files/";

int main(int argc, char *argv[])
{
    int sfd = 0;
    int port_num = 8080; // 端口号
    int recv_window = 0; // 接收窗口大小
    char *message_recv;  // 接收到的数据
    if (argc < 3)
    {
        std::cout<<"传入参数不足"<<std::endl;
        exit(1);
    }

    if (argv[1] != nullptr)
    {
        port_num = atoi(argv[1]); // 接收端口
    }

    if (argv[2] != nullptr)
    {
        recv_window = atoi(argv[2]); // 接收窗口大小
    }

    safe_udp::UdpServer *udp_server = new safe_udp::UdpServer();

    udp_server->rwnd_ = recv_window;
    sfd = udp_server->StartServer(port_num);    // 服务器启动
    message_recv = udp_server->GetRequest(sfd); // 监听客户端

    std::string file_name =
        std::string(SERVER_FILE_PATH) + message_recv + std::string(message_recv); // 文件名字=文件路径+文件名

    if (udp_server->OpenFile(file_name))
    {
        udp_server->StartFileTransfer(); // 开始传输文件
    }
    else
    {
        udp_server->SendError(); // 发生错误
    }
    free(udp_server);
    return 0;
}